#include "interfaces.h"

namespace re{
namespace event{

//-------------------------------------------------------------------
//Event Manager Class. Main event manager instance..
//-------------------------------------------------------------------
#define REE IEventManager::Get<EventManager>()

class EventManager : public IEventManager
{
public:
	EventManager() { }
	~EventManager() { }

	virtual void SafeTriggerEvent(const IEventData & data);
	virtual void SafeQueueEvent(const IEventData & data);
	virtual void VSafeTick();

	virtual void VSafeRegisterEvent();
	virtual void VSafeRemoveEvent();

	EventTypeList m_EventSet;
	EventTypeMap  m_EventTypeMap;
	EventListenerList m_GlobalListeners;
};


}
}